package br.com.felipe.agendamento.resource;

import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import br.com.felipe.agendamento.entity.MedicoDto;
import br.com.felipe.agendamento.service.MedicoServiceFacade;

@Component
@Path("/medico")
@Transactional
public class MedicoResource {

	@Autowired
	private MedicoServiceFacade medicoServiceFacade;

	@POST
	@Path("/cadastrar")
	@Produces(MediaType.TEXT_PLAIN)
	@Consumes(MediaType.APPLICATION_JSON)
	public String cadastrarMedico(MedicoDto medico) {
		medicoServiceFacade.adicionarMedico(medico);
		return medico.getIdMedico().toString() ;
	}

	@POST
	@Path("/cadastrar")
	@Produces(MediaType.APPLICATION_JSON)
	@Consumes(MediaType.APPLICATION_JSON)
	public MedicoDto cadastrarBuscarMedico(MedicoDto medico){
		medicoServiceFacade.adicionarMedico(medico);
		return medico;
	}
	
	@GET
	@Path("/buscar")
	@Produces(MediaType.APPLICATION_JSON)
	public MedicoDto getMedico(@QueryParam("idMedico") int idMedico){
		return medicoServiceFacade.getMedico(idMedico);
	}

	@GET
	@Path("/buscar")
	@Produces(MediaType.APPLICATION_JSON)
	public List<MedicoDto> getListaMedico(@QueryParam("nome") String nome, @QueryParam("crm") String crm){
		return medicoServiceFacade.getListaMedicos(nome, crm);
	}
	
	@DELETE
	@Path("/deletar")
	public void deletarMedico(@QueryParam("id") int idMedico){
		medicoServiceFacade.deletarMedico(idMedico);
	}
	
	@PUT
	@Path("/atualizar")
	@Consumes(MediaType.APPLICATION_JSON)
	public void atualizarMedico(MedicoDto m){
		medicoServiceFacade.atualizarMedico(m);
	}
}
